package com.answer.service.scoring;

import com.answer.entity.App;
import com.answer.entity.UserAnswer;

import java.util.List;

/**
 * 评分策略
 */
public interface ScoringStrategy {

    /**
     * 执行评分操作
     * 根据用户的选择列表和应用信息，计算用户的得分，并返回用户答案
     * 此方法解释了为什么需要执行评分操作，并概述了其功能
     *
     * @param choices 用户的选择列表，用于评分
     * @param app 应用实例，评分操作需要的应用信息
     * @return UserAnswer 返回用户的答案对象，包含评分结果
     * @throws Exception 如果操作过程中出现任何异常，将抛出Exception
     */
    UserAnswer doScore(List<String> choices, App app) throws Exception;

}